# coding = utf-8
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
chromeOptions = webdriver.ChromeOptions()

# # 驱动文件路径
driverfile_path = r"D:\OneDrive - xKx\原来OneDriver\重要数据\selenium驱动\79版本\chromedriver.exe"
# 启动浏览器
#=======================使用代理=====================================================================
# # 设置代理58.218.92.167:8053
# chromeOptions.add_argument("--proxy-server=http://58.63.37.160:4246")
# # 一定要注意，=两边不能有空格，不能是这样--proxy-server = http://202.20.16.82:10152
# driver = webdriver.Chrome(chrome_options = chromeOptions,executable_path=driverfile_path)
# 打开百度首页

#=======================不使用代理=====================================================================
driver = webdriver.Chrome(executable_path=driverfile_path)

driver.get(r'https://www.55155k.com/game/')#网址导航 https://h55155.com/

input("请登录账号并选择好彩种预备到可以正常下单:紧急通告可自动关闭")
try:
    while True:
        driver.find_element_by_xpath("//a[contains(text(),\"X\")]").click()
except:
    pass

js="window.open(\"http://www.0519toyota.com/Vray/cpzy/index/bjpk10\");"
driver.execute_script(js)

def 获取计划号码():
    # 切换标签
    if driver.title != "pk10神圣计划手机版-神圣计划app_神圣计划软件_神圣计划 免费":
        driver.switch_to.window(driver.window_handles[1])
    # 刷新网页
    driver.refresh()
    # 获取期号
    get_期号_string = driver.find_element_by_xpath("//td[contains(text(),\"进行中\")]").text
    # 获取计划号码
    get_计划号码 = driver.find_element_by_xpath("//td[contains(text(),\"进行中\")]/following-sibling::td[2]").text
    #转为列表
    get_计划号码_list=get_计划号码.split(' ')
    return get_计划号码_list,get_期号_string
def 获取中挂信息():
    if driver.title != "pk10神圣计划手机版-神圣计划app_神圣计划软件_神圣计划 免费":
        driver.switch_to.window(driver.window_handles[1])
    sleep(3)
    return driver.find_element_by_xpath("//table/tbody/tr[%d]"%(len(driver.find_elements_by_css_selector(".layui-table tbody tr"))-1)).text

def 获取下一期号():
    if driver.title != "Welcome":
        driver.switch_to.window(driver.window_handles[2])
    next_turn_num=driver.find_element_by_css_selector('#next_turn_num').text
    return next_turn_num
def 获取封盘时间和开奖时间():
    if driver.title != "Welcome":
        driver.switch_to.window(driver.window_handles[2])
    bet_date = driver.find_element_by_css_selector('#bet-date').text
    open_date = driver.find_element_by_css_selector('#open-date').text
    return bet_date,open_date

def 下注(第N名,号码,金额):
    if driver.title != "Welcome":
        driver.switch_to.window(driver.window_handles[2])
    tbodys = driver.find_elements_by_css_selector(".cont-list1.clearfix td")
    tbodys[第N名-1].find_element_by_css_selector('tbody tr:nth-child(%s) td~td~td input'%(int(号码))).send_keys(金额)

def 提交():
    if driver.title!="Welcome":
        driver.switch_to.window(driver.window_handles[2])
    # 提交
    driver.execute_script("document.querySelector('[class=\"bet-money\"]~a').click()")
    sleep(1)
    driver.execute_script("document.querySelector('[aria-label=\"下注明细 (请确认注单)\"] .cont-col3-box2 a').click()")
def 是否已开奖():
    if driver.title != "Welcome":
        driver.switch_to.window(driver.window_handles[2])
    未结金额=driver.find_element_by_css_selector('.betting').text
    平台余额=driver.find_element_by_css_selector('.balance').text
    return 未结金额,平台余额

投注计数=1
上班=True
初始余额赋值=True
中挂A=''
中挂B=''

投注起始金额=2
倍投=4
while True:
    #如果距离封盘时间还有10分钟就开始获取号码下注
    时间=获取封盘时间和开奖时间()
    #如果距离封盘<=10分钟了
    if 时间[0]!='已封盘':
        数字时间=int(时间[0].split(":")[0])
        开奖金额=是否已开奖()
        if 数字时间<=18 and 开奖金额[0]=="0.000":
            try:
                计划=获取计划号码()
                中挂A=获取中挂信息()
                if 中挂A!=中挂B:
                    if '中' in 中挂A:
                        print ("——————中——————")
                    else:
                        print ("——————挂——————")

                计划期号=计划[1]
                计划号码 = 计划[0]
                上班=True
            except:
                print ("获取计划号码失败，可能原因是网站已下班！网站上班后会自动开始投注。")
                上班=False
            if 上班==True:
                if "第1期" in 计划期号:
                    金额 = 投注起始金额
                elif "第2期" in 计划期号:
                    金额 = 投注起始金额*倍投
                elif "第3期" in 计划期号:
                    金额 = 投注起始金额*(倍投*倍投)

                # 点击单号1~10
                if driver.title != "Welcome":
                    driver.switch_to.window(driver.window_handles[2])

                try:
                    while True:
                        driver.find_element_by_xpath("//a[contains(text(),\"X\")]").click()
                except:
                    pass

                driver.find_element_by_xpath("//a[contains(text(),\"单号1~10\")]").click()
                driver.find_element_by_xpath("//a[contains(text(),\"重置\")]").click()
                # 获取初始余额
                剩下余额 = float(开奖金额[0]) + float(开奖金额[1])
                if 初始余额赋值 == True:
                    初始余额 = 剩下余额
                    初始余额赋值 = False
                    print ("初始余额赋值为%s" % 初始余额)
                print ("正在进行第%s次投注,期数是%s,当前余额是%s,当前时间是%s" % (投注计数, 计划期号, 剩下余额,time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))))

                #止盈止损区
                if 剩下余额/初始余额>=2:
                    print ("恭喜！今天该止盈啦！等待8小时后再继续，当前时间是%s"%(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))))
                    sleep(28800)
                elif 金额*5>剩下余额:
                    print ("要输了，该止损了！当前时间是%s"%(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))))
                    sleep(28800)


                #下单投注区
                for i in 计划号码:
                    下注(1, i, 金额)

                提交()
                投注计数 += 1
    #如果闭盘时间超过20分钟就要每隔10分钟刷新一下，避免超时，保持在线状态
    try:
        timeArray = time.strptime(时间[1], "%H:%M:%S")
    except:
        timeArray = time.strptime(时间[1], "%M:%S")
    if timeArray.tm_hour>=1 or  timeArray.tm_min>20:
        driver.refresh()
        sleep(3)
        try:
            while True:
                driver.find_element_by_xpath("//a[contains(text(),\"X\")]").click()
        except:
            pass
        sleep(900)
    sleep(120)
    中挂B=中挂A



